#ifndef CAMERA_BASE_DRIVER_H
#define CAMERA_BASE_DRIVER_H

#include "Camera.hpp"
#include <string>
#include <vector>

/**
 * @class BaseDriver
 * @brief 驱动程序基类
 */
class BaseDriver
{
  public:
    /**
     * @brief 获取相机列表
     * @note
     * - 能够扫描并自动打开新设备
     * - 新设备必须由该函数创建，并由该函数管理
     * - 创建的新设备需要继承于`BaseCamera`
     * @return 返回一个列表，其中元素为[设备UUID，相机指针]
     */
    virtual std::vector<std::pair<std::string,BaseCamera*>> GetCameraList()=0;
    /**
     * @brief 相机掉线处理函数
     * @note
     * 要求实现设备删除，并且支持重新打开设备操作
     *
     * @param uuid 相机UUID
     */
    virtual void CameraOffline(const std::string& uuid)=0;
};

#endif
